	import React,{Component,Fragment} from 'react';
	import PropTypes from 'prop-types';
		
	class TodoItem extends Component { 
		constructor(props) {//啃食踹咳得
		  super(props)
			this.handClick=this.handClick.bind(this)
		}
		render(){
			const {content,test}=this.props
			return (
				<div onClick={this.handClick}>{test}-{content}</div>
			);
		}
		handClick(){// this.props.index
			const {deleteItem,index}=this.props
			deleteItem(index)
		}
		//一个组件从父组件接受参数
		//只要父组件的render生命周期重新执行，子组件的就会执行
		//如果这个组件第一次存在于父组件中 不会执行
		//如果这个组件之前已经存在于父组件中，才会执行
		componentWillReceiveProps(nextProps){
			console.log("chind-componentWillReceiveProps-99")
		}
		//当这个组件即将被页面剔除时执行
		componentWillUnmount(){
			console.log("componentWillUnmount-移除")
		}
		//组件被更新之前，他会自动被执行 =>wp
		shouldComponentUpdate(nextProps, nextState){
			if(nextProps.content!==nextState.content){
				return true
			}else{
				return false
			}
			console.log("shouldComponentUpdate")
		}
	}
	TodoItem.propTypes={//类型验证
		test:PropTypes.string.isRequired,
		content:PropTypes.oneOfType([PropTypes.number,PropTypes.string]),
		deleteItem:PropTypes.func,
		index:PropTypes.number
	}
	TodoItem.defaultProps={//默认值
		test:"hello world"
	}
	
export default TodoItem;

// Son.propTypes = { PropTypes.arrayOf(PropTypes.number,PropTypes.string),
//      optionalArray: PropTypes.array,//检测数组类型
//      optionalBool: PropTypes.bool,//检测布尔类型
//      optionalFunc: PropTypes.func,//检测函数（Function类型）
//      optionalNumber: PropTypes.number,//检测数字
//      optionalObject: PropTypes.object,//检测对象
//      optionalString: PropTypes.string,//检测字符串
//      optionalSymbol: PropTypes.symbol,//ES6新增的symbol类型
// }

// 一个对象可以是多种类型其中之一
// optionalUnion: PropTypes.oneOfType([
// 		PropTypes.string,
// 		PropTypes.number,
// 		PropTypes.instanceOf(Message)
// ]),
